package com.klikmee.sms.core.base.communicator.starion;

import com.klikmee.sms.core.base.communicator.Communicator;
import com.klikmee.sms.core.model.IncomingMessage;

/**
 * Defines requirements for starion communicator.
 * @author makcro
 *
 */
public interface StarionCommunicator extends Communicator {

	/**
	 * Called when new SMS message is received from Starion provider.
	 * Translates message into {@link IncomingMessage} and forwards it to core context.
	 * 
	 * @param senderId msisdn of the sender
	 * @param shortId short code this message is sent to
	 * @param providerId 
	 * @param messageText text of the message
	 * @param starionMessageId unique message id at starion provider used to send reply and correlate delivery reports.
	 * @param sdp
	 * @param operator id of the GSM operator this message is send over.
	 */
	void onSmsMessage(String senderId, String shortId, String providerId, String messageText, String starionMessageId, String sdp, String operator);

	/**
	 * Called when new delivery report request is received from starion provider.
	 * Request is translated in {@link com.klikmee.sms.core.model.OutgoingMessage} and forwarded
	 * to Core for further processing
	 * @param startionMessageId starion's message id, received in {@link #onSmsMessage(String, String, String, String, String, String, String)} call
	 * @param charged indicator if message was charged or not
	 */
	void onDeliveryReport(String startionMessageId, String charged);
	
}
